var staffListUrl = "/GetStaffAllServlet";
var delStaffUrl = "/DeleteStaffServlet";
var updateStaffUrl = "/UpdateStaffServlet";
var roleListUrl = "/GetAllRoleServlet";
var addStaffUrl = "/AddStaffServlet";
$(function () {

    // 初始化分页列表
    staffManage.initList();
    //初始化模态框角色信息
    staffManage.initRole();

})
var staffManage = {};

staffManage.initList = function () {
    $("#staffList").bootstrapTable({
        url: staffListUrl, //请求路径 **********************************
        method: 'post', //请求方式(*)
        contentType: 'application/x-www-form-urlencoded', //使用from表单方式提交(*)
        toolbar: '#toolbar', //工具按钮的容器
        striped: true, //是否启用隔行变色
        cache: false, //使用是否缓存 默认为true,所以一般情况下需要设置一下为false (*)
        pagination: true, //是否显示分页(*)
        sortable: false, //使用启用排序
        sortOrder: 'desc', //排序方式
        queryParams: staffManage.queryParams, //传递参数(*)  *************************************************
        queryParamsType: '',
        sidePagination: 'server', // 分页方式有两种 1.client 客户端分页  2.server分页
        pageNumber: 1, //初始化页数为第一页  显示第几页
        pageSize: 5, //默认每页加载行数
        pageList: [10, 25, 50, 100], //每页可选择记录数
        strictSearch: true,
        showColumns: false, // 是否显示所有的列
        showRefresh: false, // 是否显示刷新按钮
        minimumCountColumns: 2, // 最少允许的列数
        clickToSelect: true, // 是否启用点击选中行
        uniqueId: "id", // 每一行的唯一标识，一般为主键列
        showToggle: false, // 是否显示详细视图和列表视图的切换按钮
        cardView: false, // 是否显示详细视图
        detailView: false, // 是否显示父子表
        smartDisplay: false,
        onClickRow: function (e, row, element) {  // 设置行点击事件***************************
            // alert('监控行点击事件：' + row.id)
        },
        responseHandler: function (result) {   // 通过网络请求得到   数据进行解析初始化*******************************
            console.log(result.data.count);
            if (result != null) {
                return {
                    'total': result.data.count, //总条数*************************************
                    'rows': result.data.list //所有的数据**********************************
                };
            }
            return {
                'total': 0, //总条数
                'rows': [] //所有的数据
            }
        },
        //列表显示
        columns: [{   // 配置显示的列表 ****************************
            field: 'id',
            title: "商品编号",
            visible: false
        }, {
            field: 'staffId',
            title: "员工编号"
        }, {
            field: 'staffName',
            title: "员工姓名"
        }, {
            field: 'idCard',
            title: "员工年龄",
            formatter: function (value) {    //根据需求 进行第二次配置***********************************
                var res = "-";
                if (value != "" && value != null) {
                    res = value.substr(6, 4) + "/" + value.substr(10, 2) + "/" + value.substr(12, 2);
                    res = staffManage.getNow(res + " 00:00:00");
                }
                return res;
            }
        }, {
            field: 'phone',
            title: "员工手机号"
        }, {
            field: 'idCard',
            title: "员工身份证"
        }, {
            field: 'address',
            title: "员工地址"
        }, {
            field: 'status',
            title: "状态",
            formatter: function (value) {
                switch (value) {
                    case 1 :
                        return "在职";
                    case 2 :
                        return "离职";
                    case 3 :
                        return "黑名单";
                }
            }
        }, {
            field: 'roleName',
            title: "角色"
        }, {
            field: 'momo',
            title: "备注"
        }, {
            field: 'createdTime',
            title: "创建时间"
        }, {
            field: 'operation',
            events: buttonOperateEvent, // 设置每一行按钮的 点击事件*********************************
            title: '操作',
            formatter: function (value, row, index) {  // 为当前行增加 按钮*******************
                return staffManage.buttonOption(value, row, index);
            }
        }
        ]
    });
}

/**
 * 获取具体的参数
 * @param params
 * @returns {{pageNumber: *, searchName: *, pageSize: *, searchStaffId: *}}
 */
staffManage.queryParams = function (params) {
    return {
        "pageNumber": params.pageNumber, //当前页数
        "pageSize": params.pageSize, //每页条数
        "searchStaffId": $("#searchStaffId").val(),
        "searchName": $("#searchName").val()
    }
}

/**
 * 按钮的点击事件
 * @type {{"click .delStaff": Window.buttonOperateEvent.click .delStaff, "click .updateStaff": Window.buttonOperateEvent.click .updateStaff}}
 */
window.buttonOperateEvent = {
    // 更新 员工 对应的 更新按钮的updateStaff
    'click .updateStaff': function (e, value, row, index) {
        // 初始化更新的模态框
        staffManage.update(row);
    },
    // 删除员工 更新按钮的delStaff
    'click .delStaff': function (e, value, row, index) {
        staffManage.del(row);
    }
}
/**
 * 为每一行添加按钮
 * @param value
 * @param row
 * @param index
 * @returns {string}
 */
staffManage.buttonOption = function (value, row, index) {
    var returnButton = [];
    returnButton.push('<button class="btn btn-info updateStaff">修改</button>');
    returnButton.push('<button class="btn btn-danger delStaff">删除</button>');
    return returnButton.join('');
}

/**
 * 刷新列表
 */
staffManage.search = function () {
    //bootstrapTable 刷新
    $("#staffList").bootstrapTable('refresh');
}

staffManage.getNow = function (startTime) {
    //结束时间
    var date2 = new Date();
    //时间差的毫秒数
    var date3 = date2.getTime() - new Date(startTime).getTime();
    //计算出相差天数
    var days = Math.floor(date3 / (24 * 3600 * 1000));
    return parseInt(days / 365);
}

staffManage.del = function (row) {
    /**
     * 一般情况下删除要加confirm
     */
    Modal.confirm({
        msg: "确认当前操作"
    }).on(function (e) {
        if (e) {
            $.ajax({
                url: delStaffUrl,
                type: "post",
                data: {
                    "id": row.id
                },
                dataType: "json",
                success: function (result) {
                    if (result.status != 0) {
                        toastr['success']("删除成功");
                        staffManage.search();
                    } else {
                        toastr['error']("删除失败");
                    }
                }
            });
        }
    });
}

staffManage.addStaff = function () {
    $("#myModal").modal('show');
}

staffManage.update = function (row) {
    $("#myModal").modal('show');
    staffManage.initModal(row);
}

staffManage.initRole = function () {
    //var res = JSON.parse("[{\"id\":1,\"roleName\":\"管理员\",\"grade\":1,\"description\":\"管理员\",\"status\":1},{\"id\":2,\"roleName\":\"吧台\",\"grade\":2,\"description\":\"小卖部\",\"status\":1},{\"id\":3,\"roleName\":\"前台\",\"grade\":3,\"description\":\"前台\",\"status\":1},{\"id\":4,\"roleName\":\"收银员\",\"grade\":4,\"description\":\"收银员\",\"status\":1},{\"id\":5,\"roleName\":\"店长\",\"grade\":5,\"description\":\"店长\",\"status\":1},{\"id\":7,\"roleName\":\"新增职位\",\"description\":\"新增的职位\",\"status\":1},{\"id\":8,\"roleName\":\"保洁\",\"description\":\"保洁--负责用泳池消毒\",\"status\":1}]");
    $.ajax({
        url: roleListUrl,
        type: "post",
        dataType: "json",
        success: function (result) {
            if (result.status != 0) {
                var res = result.data;
                for (var i = 0; i < res.length; i++) {
                    var roleId = res[i].id;
                    var opt = $("<option value='" + res[i].id + "'>" + res[i].roleName + "</option>");
                    $("#roleId").append(opt);
                }
            } else {
                alert(result.message);
            }
        }
    });
}

staffManage.initModal = function (row) {
    var staffId = row.staffId;
    $("#staffId").val(row.staffId);
    $("#staffName").val(row.staffName);
    $("#phone").val(row.phone);
    $("#idCard").val(row.idCard);
    $("#roleId").val(row.roleId);
    $("#remake").val(row.momo);
    $("#address").val(row.address);
}
/*
* 表单提交验证
* */
staffManage.formCommit = function () {
    // 当点击提交校验输入框
    var bootstrapValidator = $("#staffForm").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (bootstrapValidator.isValid()) {
        if ($("#staffId").val() == "") {
            $.ajax({
                url: addStaffUrl,
                type: "post",
                data: {
                    "staffName": $("#staffName").val(),
                    "phone": $("#phone").val(),
                    "idCard": $("#idCard").val(),
                    "status": $("#status").val(),
                    "roleId": $("#roleId").val(),
                    "remake": $("#remake").val(),
                    "address": $("#address").val(),
                    "roleId": $("#roleId").val(),
                },
                dataType: "json",
                success: function (result) {
                    if (result.status != 0) {
                        toastr['success']("新增成功");
                    } else {
                        toastr['error']("新增失败");
                    }
                }
            });
        } else {
            $.ajax({
                url: updateStaffUrl,
                type: "post",
                data: {
                    "staffId": $("#staffId").val(),
                    "staffName": $("#staffName").val(),
                    "phone": $("#phone").val(),
                    "idCard": $("#idCard").val(),
                    "status": $("#status").val(),
                    "roleId": $("#roleId").val(),
                    "remake": $("#remake").val(),
                    "address": $("#address").val()
                },
                dataType: "json",
                success: function (result) {
                    if (result.status != 0) {
                        toastr['success']("修改成功");
                    } else {
                        toastr['error']("修改失败");
                    }
                }
            });
        }
        $("#myModal").modal('hide');
        staffManage.search();
    } else {
        toastr['error']("校验失败");

        // 加入是模态框，再模态框时，重置 调用以下
        // $("#oderForm").data('bootstrapValidator').resetForm();
        // $("#oderForm")[0].reset();

    }
}

/**
 * 关闭模态框
 */
staffManage.closeModel = function () {
    $("#staffForm").data('bootstrapValidator').resetForm();
    $("#staffForm")[0].reset();
}
/* $("#myModal").on('hide.bs.modal', function () {
    //移除上次的校验配置
    $("#staffForm").data('bootstrapValidator').resetForm();
    $("#staffForm")[0].reset();
})*/


/*
* 初始化表单验证
* */
$("#staffForm").bootstrapValidator({
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
        staffName: {
            validators: {
                notEmpty: {
                    message: "员工姓名不能为空"
                }
            }
        },
        phone: {
            validators: {
                notEmpty: {
                    message: "手机号不能为空"
                }
            }
        },
        idCard: {
            validators: {
                notEmpty: {
                    message: "身份证号不能为空"
                }
            }
        }
    }
});



